5 REM COPYRIGHT 1992 - COMPUTE PUBLICATIONS INTL LTD - ALL RIGHTS RESERVED 10 DIM BY$(15),CM$(15) 20 PT$=" ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'-#" 30 AS$="204142434445464748494A4B4C4D4E4F505152535455565758595A" 40 SC$="30313233343536373839272D23":AS$=AS$+SC$ 50 HX$="0123456789ABCDEF" 60 PRINT"INSERT CHARACTER DISK, PRESS A KEY..." 70 GETA$:IFA$=""THEN GOTO 70 80 OPEN 15,8,15,"I"+"0" 90 OPEN 2,8,2,"#" 100 PRINT"RPG CODEBUSTER":PRINT"RUN/STOP TO QUIT. OPTIONS:" 110 PRINT:PRINT:PRINT"(1) CONVERT CHARACTER STAT TO HEX" 120 PRINT:PRINT:PRINT"(2) CONVERT NAME TO PROBABLE BYTES" 130 PRINT:PRINT:PRINT"(3) FIND CHARACTER DISK BLOCK" 140 GETA$:IF A$="1" OR A$="2" THEN GOTO 160 150 IF A$<>"3" THEN GOTO140 160 IF A$="1" THEN GOSUB 1320 170 IF A$="1" THEN GOTO 100 180 IF A$="2" THEN GOTO 330 190 PRINT"CHOOSE METHOD A,B OR C:" 200 PRINT:PRINT:PRINT"(A) LEFT JUSTIFIED CHARACTER TRAP" 210 PRINT:PRINT:PRINT"(B) RUNNING (EMBEDDED) CHARACTER TRAP" 220 PRINT:PRINT:PRINT"(C) PARTY INITIAL TRAP" 230 GETA$:IF(A$<>"A"ANDA$<>"B")AND A$<>"C" THEN GOTO230 240 FL=1:IF A$="B" THEN FL=0 250 IF A$="C" THEN FL=3:L1$="":L2$="":L3$="":I$="" 260 SF=0:PRINT:PRINT:PRINT"CHANGE SECTOR RANGE DEFAULT (Y OR N)?" 270 GETA$:IFA$<>"Y" AND A$<>"N" THEN GOTO270 280 IF A$="Y" THEN SF=1 290 IF FL<>3 THEN GOTO330 300 PRINT"TYPE PARTY FIRST INITIALS" 310 INPUT"IN ORDER, NO SPACES";RP$ 320 GOTO340 330 INPUT"TYPE YOUR CHARACTER'S NAME, THEN RETURN";RP$ 340 FORJ=1TO15 350 H$=MID$(RP$,J,1):FORT=1TO40:IF H$=MID$(PT$,T,1) THEN I=2*T-1:T=41 360 NEXT 370 CM$(J)=MID$(AS$,I,2) 380 IF CM$(J)="20" THEN GOTO410 390 IF MID$(CM$(J),1,1)="3" AND A$<>"2" THEN CM$(J)="5"+MID$(CM$(J),2,1) 400 IF MID$(CM$(J),1,1)="2" AND A$<>"2" THEN CM$(J)="4"+MID$(CM$(J),2,1) 410 IF FL=3 THEN I$=I$+CM$(J) 420 IFJ=LEN(RP$)THEN J=16 430 NEXT 440 IF A$<>"2" THEN GOTO510 450 BY$="" 460 FORK=1TOLEN(RP$) 470 BY$=BY$+CM$(K):BY$=BY$+" ":NEXT 480 PRINT"PROBABLE DISK BYTES FOR NAME:" 490 PRINT" ";BY$ 500 GOTO100 510 PRINT"POSSIBLE HOT TRACKS - 27-30,17-20" 520 INPUT"WHICH STARTING TRACK";T 530 INPUT"WHICH ENDING TRACK";ET 540 IF T<1 OR T>35 THEN GOTO520 550 IF ET<1 OR ET>35 THEN GOTO520 560 IF T>ET THEN GOTO520 570 PRINT"THIS TAKES A WHILE -- " 580 PRINT"CURRENT TRACK AND SECTOR" 590 PRINT" BEING EXAMINED:" 600 S=0 610 PRINT#15,"U1:2,"0;T;S 620 PRINT#15,"B-P:2,1" 630 PRINT#15,"M-R"CHR$(0)CHR$(5) 640 GET#15,BY$(0):IF BY$(0)="" THEN BY$(0)=CHR$(0) 650 F=1 660 PRINT" ";T;S 670 FORC=0TO8 680 FORD=FTO15 690 GET#2,BY$(D) 700 IF BY$(D)="" THEN BY$(D)=CHR$(0) 710 NEXT D:F=0 720 NM=1 730 IF C=0 OR C=1 THEN GOTO 750 740 IF C<>8 THEN NM=0:GOTO1090 750 BY$="" 760 FORD=0TO15 770 BN=ASC(BY$(D)) 780 N1=INT(BN/16) 790 B1$=MID$(HX$,N1+1,1) 800 N2=INT(BN-16*N1) 810 B2$=MID$(HX$,N2+1,1) 820 FORK=2TO18STEP2 830 IF B1$=MID$(HX$,K,1) THEN B1$="5" 840 NEXT 850 IF B1$<>"5" THEN B1$="4" 860 BY$=B1$+B2$ 870 IF BY$="40" THEN BY$="20" 880 IF FL=0 THEN GOTO920 890 IF CM$(D+1)<>BY$ THEN NM=0 900 IF FL=1 AND NM=0 THEN D=16:GOTO990 910 IF D=LEN(RP$)-1 THEN D=16:GOTO990 920 BY$(D)=BY$ 930 IF FL<>3 THEN GOTO990 940 NM=0 950 IF C=0 THEN L1$=L1$+BY$:GOSUB1590 960 IF C=1 THEN L3$=L3$+BY$:GOSUB1590 970 IF C=0 OR C=8 THEN L2$=L2$+BY$:GOSUB1590 980 IF FL=3 THEN D=16 990 NEXTD 1000 IF FL=1 OR FL=3 THEN GOTO1090 1010 FORD=0TO15-LEN(RP$):NM=1 1020 IF BY$(D)<>CM$(1) THEN GOTO 1070 1030 FORK=1TOLEN(RP$)-1 1040 IF BY$(D+K)<>CM$(K+1) THEN NM=0 1050 NEXT 1060 IF NM=1 THEN D=16:GOTO1080 1070 IF D=15-LEN(RP$) THEN NM=0 1080 NEXT 1090 IF NM=1 THEN C=9 1100 NEXT 1110 IF NM=1 THEN GOTO1220 1120 S=S+1:GOSUB1150 1130 IF T>ET THEN GOTO1290 1140 GOTO610 1150 IF SF=0 THEN SL=12:GOTO1200 1160 IF T<18 THEN SL=20:GOTO1200 1170 IF T<25 THEN SL=18:GOTO1200 1180 IF T<31 THEN SL=17:GOTO1200 1190 IF T<35 THEN SL=16 1200 IF S>SL THEN S=0:T=T+1:L1$="":L2$="":L3$="" 1210 RETURN 1220 PRINT RP$" FOUND -" 1230 PRINT"TRACK, SECTOR:";T;S 1240 PRINT"MORE RPG CODEBUSTING? (Y OR N)" 1250 GETA$:IF A$="" THEN GOTO1250 1260 CLOSE 15,8,15:CLOSE 2,8,2 1270 IF A$="Y" THEN GOTO 60 1280 END 1290 PRINT RP$;" NOT YET FOUND..." 1300 CLOSE 15,8,15:CLOSE 2,8,2 1310 GOTO 60 1320 FORD=0TO7:BY$(D)="0":NEXT 1330 PRINT "NO COMMAS, PLEASE..." 1340 INPUT"CHARACTER STAT";CS 1350 IF CS>268435456 THEN PRINT"FIGURE TOO LARGE FOR ROUTINE":RETURN 1360 IF CS=268435456 THEN BY$(6)="1":GOTO1500 1370 IF CS=16777216 THEN BY$(7)="1":GOTO1500 1380 IF CS>16777216 THEN DV=16777216:D=7:GOSUB1550 1390 IF CS=1048576 THEN BY$(4)="1":GOTO1500 1400 IF CS>1048576 THEN DV=1048576:D=4:GOSUB 1550 1410 IF CS=65536 THEN BY$(5)="1":GOTO1500 1420 IF CS>65536 THEN DV=65536:D=5:GOSUB 1550 1430 IF CS=4096 THEN BY$(2)="1":GOTO1500 1440 IF CS>4096 THEN DV=4096:D=2:GOSUB1550 1450 IF CS=256 THEN BY$(3)="1":GOTO1500 1460 IF CS>256 THEN DV=256:D=3:GOSUB1550 1470 IF CS=16 THEN BY$(0)="1":GOTO1500 1480 IF CS>16 THEN DV=16:D=0:GOSUB1550 1490 BY$(1)=MID$(HX$,CS+1,1) 1500 BY$(0)=BY$(0)+BY$(1):BY$(1)=BY$(2)+BY$(3) 1510 BY$(2)=BY$(4)+BY$(5):BY$(3)=BY$(6)+BY$(7) 1520 PRINT"PROBABLE FORM OF CODED STAT IN BLOCK:" 1530 PRINT BY$(0),BY$(1),BY$(2),BY$(3) 1540 RETURN 1550 Q=CS/DV:Q=INT(Q) 1560 BY$(D)=MID$(HX$,Q+1,1) 1570 CS=CS-DV*Q 1580 RETURN 1590 IF L1$=I$ THEN NM=1 1600 IF L2$=I$ THEN NM=1 1610 IF L3$=I$ THEN NM=1 1620 IF NM=1 THEN C=9:RETURN 1630 IF LEN(L1$)=LEN(I$) THEN T$=L1$:GOTO1670 1640 IF LEN(L2$)=LEN(I$) THEN T$=L2$:GOTO1670 1650 IF LEN(L3$)=LEN(I$) THEN T$=L3$:GOTO1670 1660 GOTO1740 1670 FORK=3TOLEN(T$)-1STEP2:W=LEN(T$)-(K-1):T2$=RIGHT$(T$,W):V=LEN(T2$) 1680 IF T2$=MID$(I$,1,V)THENK=LEN(T$) 1690 NEXT 1700 IF MID$(T2$,1,2)<>MID$(I$,1,2) THEN T2$="" 1710 IF LEN(L1$)=LEN(I$) THEN L1$=T2$:GOTO1740 1720 IF LEN(L2$)=LEN(I$) THEN L2$=T2$:GOTO1740 1730 IF LEN(L3$)=LEN(I$) THEN L3$=T2$ 1740 RETURN